using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using DCRF.Common.Primitive;
using DCRF.Common.Collection;
using System.Collections;
using DCRF.Common.Core;
using DCRF.Common.Definition;
using DCRF.Common.Connection;

namespace DCRF.Common.Interface
{
    //There will be a remote implementation of this interface

	/// <summary>
	/// describes the common behavior of a Block
    /// Blocks must support multiple calls to dispose method. This is because the failover mechanism in Block brokers
    /// may call dispose method multiple times
	/// </summary>
    public interface IBlock : IDisposable, IConnectorSubject
	{
        Guid Id
        {
            get;
        }

        IConnector this[string key]
        {
            get;
        }

        /// <summary>
        /// Lookup blocks inside innerWeb of this Block
        /// </summary>
        /// <param name="Guid"></param>
        /// <returns></returns>
        IBlock this[Guid id]
        {
            get;
        }
    }
}
